<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Document - Validform - 一行代码搞定整站的表单验证！ &copy;瑞金佬的前端路</title>
<link rel="stylesheet" href="demo/css/style.css" type="text/css" media="all" />
<link href="demo/css/wp-syntax.css" type="text/css" rel="stylesheet" />
<link href="demo/css/demo.css" type="text/css" rel="stylesheet" />
</head>

<body>  
<div class="header">
    <div class="wraper">
    	<h1><a href="./">Validform</a></h1>
        <ul class="nav">
            <li><a href="http://validform.rjboy.cn/">关于Validform</a></li>
            <li><a href="./demo.html">Demo</a></li>
            <li><a href="./document.html" class="current">文档</a></li>
            <li><a href="./help.html">帮助</a></li>
            <li><a href="http://validform.rjboy.cn/?p=1">网友讨论</a></li>
        </ul>
    </div>
</div>

<div class="main">
    <div class="wraper">
        <div class="cls document">
        	<div class="content fr">
            	<dl>
                	<dt><a name="getstart">Validform使用入门</a></dt>
                    <dd>
                    	<h3>1、引入css</h3>
                        <p>请查看下载文件中的style.css，把里面Validform必须部分复制到你的css中（文件里这个注释 "<span class="green">/*==========以下部分是Validform必须的===========*/</span>" 之后的部分是必须的）。之前发现有部分网友把整个style.css都引用在了页面里，然后发现样式冲突了。</p>
                        <h3>2、引入js （jquery 1.4.3 以上版本都可以）</h3>
                        <div class="wp_syntax"><table><tbody><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre style="font-family:monospace;" class="javascript"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">"text/javascript"</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">"http://validform.rjboy.cn/wp-content/themes/validform/js/jquery-1.6.2.min.js"</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">"text/javascript"</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">"http://validform.rjboy.cn/Validform/v5.1/Validform_v5.1_min.js"</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></tbody></table></div>
                        
                        <h3>3、给需要验证的表单元素绑定附加属性</h3>
                        <div class="wp_syntax"><table><tbody><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre style="font-family:monospace;" class="html">
&lt;form class="demoform" &gt;
&lt;input type="text" value="" name="name" datatype="s5-16" errormsg="昵称至少5个字符,最多16个字符！" /&gt;
&lt;/form&gt;
</pre></td></tr></tbody></table></div>
                        
                        <h3>4、初始化，就这么简单</h3>
                        <div class="wp_syntax"><table><tbody><tr><td class="line_numbers"><pre>1</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">(</span><span style="color: #3366CC;">".demoform"</span><span style="color: #009900;">)</span>.<span style="color: #660066;">Validform</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span></pre></td></tr></tbody></table></div>
                        
                        <p><strong>注：</strong><br />
                        1、Validform有非压缩、压缩和NCR三个版本提供下载，NCR是通用版，当你页面因编码问题，提示文字出现乱码时可以使用这个版本；<br />
                        <span class="red">2、Validform没有限定必须使用table结构，它可以适用于任何结构，需要在tiptype中定义好位置关系。</span></p>
                        
                    </dd>
                    
                    <dt><a name="bindtype">绑定附加属性</a></dt>
                    <dd>
                    	<p>凡要验证格式的元素均需绑定datatype属性，datatype可选值内置有10类，用来指定不同的验证格式。<br />
                        如果还不能满足您的验证需求，可以传入自定义datatype，自定义datatype是一个非常强大的功能，通过它可以满足你的任何需求。</p>
						<p>可以绑定的附加属性有：<strong>datatype</strong>、<strong>nullmsg</strong>、<strong>sucmsg</strong>、<strong>errormsg</strong>、<strong>ignore</strong>、<strong>recheck</strong>、<strong>tip</strong>、<strong>altercss</strong>、<strong>ajaxurl</strong> 和 <strong>plugin</strong> </p>
                        <p><strong>绑定方法如下所示：</strong></p>
                    	<div class="wp_syntax"><table><tbody><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre style="font-family:monospace;" class="html">&lt;!--ajax实时验证用户名--&gt;
&lt;input type="text" value="" name="name" datatype="e" ajaxurl="valid.php?myparam1=value1&myparam2=value2" sucmsg="用户名验证通过！" nullmsg="请输入用户名！" errormsg="请用邮箱或手机号码注册！"  /&gt;
&nbsp;
&lt;!--密码--&gt;
&lt;input type="password" value="" name="userpassword" datatype="*6-15" errormsg="密码范围在6~15位之间！" /&gt;
&lt;!--确认密码--&gt;

&lt;input type="password" value="" name="userpassword2" datatype="*" recheck="userpassword" errormsg="您两次输入的账号密码不一致！" /&gt;
&nbsp;
&lt;!--默认提示文字--&gt;
&lt;textarea tip="请在这里输入您的意见。" errormsg="很感谢您花费宝贵时间给我们提供反馈，请填写有效内容！"  datatype="s" altercss="gray" class="gray" name="msg" value=""&gt;请在这里输入您的意见。&lt;/textarea&gt;
&nbsp;
&lt;!--使用swfupload插件--&gt;
&lt;input type="text" plugin="swfupload" class="inputxt" disabled="disabled" value=""&gt;
&lt;input type="hidden" value="" pluginhidden="swfupload"&gt;
&nbsp;
&lt;!--使用passwordStrength插件--&gt;
&lt;input type="password" errormsg="密码至少6个字符,最多18个字符！" datatype="*6-18" plugin="passwordStrength" class="inputxt" name="password" value=""&gt;
&lt;div class="passwordStrength" style="display:none;"&gt;&lt;b&gt;密码强度：&lt;/b&gt; &lt;span&gt;弱&lt;/span&gt;&lt;span&gt;中&lt;/span&gt;&lt;span class="last"&gt;强&lt;/span&gt;&lt;/div&gt;
&nbsp;
&lt;!--使用DatePicker插件--&gt;
&lt;input type="text" plugin="datepicker" class="inputxt" name="birthday" value=""&gt;</pre></td></tr></tbody></table></div>
						
                        <h3>说明：</h3>
                        <ul class="lireset2">
                        	<li>
                            	<strong class="orange">datatype</strong><br />
                                <strong>内置基本的datatype类型有：</strong> * | *6-16 | n | n6-16 | s | s6-18 | p | m | e | url<br>
                                *：检测是否有输入，可以输入任何字符，不留空即可通过验证；<br>
                                *6-16：检测是否为6到16位任意字符；<br>
                                n：数字类型；<br>
                                n6-16：6到16位数字；<br>
                                s：字符串类型；<br>
                                s6-18：6到18位字符串；<br>
                                p：验证是否为邮政编码；<br>
                                m：手机号码格式；<br>
                                e：email格式；<br>
                                url：验证字符串是否为网址。
                                
                                <div class="mt10">自定义datatype的名称，可以由字母、数字、下划线、中划线和*号组成。</div>
                                <div class="mt10">形如"*6-16"的datatype，Validform会自动扩展，可以指定任意的数值范围。如内置基本类型有"*6-16"，那么你绑定datatype="*4-12"就表示4到12位任意字符。如果你自定义了一个datatype="zh2-4"，表示2到4位中文字符，那么datatype="zh2-6"就表示2到6位中文字符。</div>
                                <div class="mt10">5.2版本之后，datatype支持规则累加或单选。用","分隔表示规则累加；用"|"分隔表示规则多选一，即只要符合其中一个规则就可以通过验证，绑定的规则会依次验证，只要验证通过，后面的规则就会忽略不再比较。如绑定datatype="m|e"，表示既可以填写手机号码，也能填写邮箱地址，如果知道填入的是手机号码，那么就不会再检测他是不是邮箱地址；datatype="zh,s2-4"，表示要符合自定义类型"zh"，也要符合规则"s2-4"。</div>
                                <div class="mt10 green"><strong>注：</strong> <br />5.2.1版本之后，datatype支持：<br /><strong>直接绑定正则</strong>：如可用这样写datatype="/\w{3,6}/i"，要求是3到6位的字母，不区分大小写；<br /><strong>支持简单的逻辑运算</strong>：如datatype="m <span class="orange">|</span> e<span class="orange">,</span> *4-18 <span class="orange">|</span> /\w{3,6}/i <span class="orange">|</span> /^validform\.rjboy\.cn$/"，<br />这个表达式的意思是：可以是手机号码；或者是邮箱地址，但字符长度必须在4到18位；或者是3到6位的字母，不区分大小写；或者输入validform.rjboy.cn，区分大小写。这里","分隔相当于逻辑运算里的"&&"； "|"分隔相当于逻辑运算里的"||"；不支持括号运算。</div>
                            </li>
                            <li><strong class="orange">nullmsg</strong><br />
                            当表单元素值为空时的提示信息，不绑定，默认提示"请填入信息！"。<br/>
                            如：nullmsg="请填写用户名！"<br>
							<span class="green">5.3版开始，对于没有绑定nullmsg的对象，会自动查找class为Validform_label下的文字作为提示文字:</span><br>
                            如这样的html结构：<br>
							&lt;span class="Validform_label"&gt;*用户名：&lt;/span&gt;&lt;input type="text" val="" datatype="s" /&gt;<br>
                            当这个文本框里没有输入时的出错信息就会是："请输入用户名！"<br>
                            这里Validform_label跟input之间的位置关系，不一定是要同级关系，同级里没有找到的话，它还会在同级的子级、父级的同级、父级的同级的子级里查找。
                            </li>
                            <li><strong class="orange">sucmsg</strong> <sup class="green">5.3+</sup><br />
                            当表单元素通过验证时的提示信息，不绑定，默认提示"通过信息验证！"。<br/>
                            如：sucmsg="用户名还未被使用，可以注册！"<br>
							5.3版开始，也可以在实时验证返回的json数据里返回成功的提示文字，请查看附加属性ajaxurl的介绍。</li>
                            <li><strong class="orange">errormsg</strong><br />
                            输入内容不能通过验证时的提示信息，默认提示"请输入正确信息！"。<br/>
                            如：errormsg="用户名必须是2到4位中文字符！"<br>
							<span class="green">5.3版开始，Validform可以根据你绑定的datatype智能的输出相应出错信息，具体介绍请查看<a href="#tipmsg">tipmsg</a></span>
                            </li>
                            <li><strong class="orange">ignore</strong><br />
                            绑定了ignore="ignore"的表单元素，在有输入时，会验证所填数据是否符合datatype所指定数据类型，<br/>没有填写内容时则会忽略对它的验证；</li>
                            <li><strong class="orange">recheck</strong><br />
                            表单里面经常需要检查两次密码输入是否一致，recheck就是用来指定需要比较的另外一个表单元素。<br/>
                            如：recheck="password1"，那么它就会拿当前元素的值跟该表单下，name为"password1"的元素比较。</li>
                            <li><strong class="orange">tip</strong><br />
                            表单里经常有些文本框需要默认就显示一个灰色的提示文字，当获得焦点时提示文字消失，失去焦点时提示文字显示。tip属性就是用来实现这个效果。它通常和altercss搭配使用。<br/>
                            如&lt;input type="text" value="默认提示文字" class="gray intxt" tip="默认提示文字" altercss="gray" /&gt;</li>
                            <li><strong class="orange">altercss</strong><br />
                            它需要和tip属性配合使用，altercss指定的样式名，会在文本框获得焦点时被删除，没有输入内容而失去焦点时重新加上。</li>
                            <li><strong class="orange">ajaxurl</strong><br />
                            指定ajax实时验证的后台文件的地址。<br />
							后台页面如valid.php文件中可以用 $_POST["param"] 接收到值，Ajax中会POST过来变量param和name。param是文本框的值，name是文本框的name属性。<br />

                            5.2版本开始，可以在ajaxurl指定的url后绑定参数，如：ajaxurl="valid.php?myparam1=value1&myparam2=value2"； <span class="green">5.3.1开始，地址后面附带的参数内部不再做另外解析，仍附带在地址后面，所以需要用GET方式去获取地址后面带的参数。</span><br />
                            
							5.3之前的版本中，该文件输出的字符会作为错误信息显示在页面上，如果验证通过需输出小写字母"y"。<br>
                            
                            <span class="green">在5.3版中，实时验证的返回数据做了调整，须是含有status值的json数据！跟callback里的ajax返回数据格式统一，建议不再返回字符串"y"或"n"。目前这两种格式的数据都兼容。</span><br>
                            
                            <span style="color:red">注： <br>
							如果ajax校验通过，会在该元素上绑定validform_valid值为true。可以通过设置该值来控制验证能不能通过，如验证码的验证，第一次验证通过后，不小心右点击了下验证码图片，验证码换了，但是仍然指示这个对象已经通过了验证，这时可以手动调整该值：$("#name")[0].validform_valid="false"。</span><br>
							
                            怎样设置ajax的参数，具体可以查看Validform对象的<a href="#config">config</a>方法。
                            </li>
                            <li><strong class="orange">plugin</strong><br />
                            指定需要使用的插件。<br>
							<span class="green">5.3版开始，对于日期、swfupload和密码强度检测这三个插件，绑定了plugin属性即可以初始化对应的插件，可以不用在validform初始化时传入空的usePlugin了。</span><br>
                            如，你要使用日期插件，5.3之前版本需要这样初始化：<pre>
$(".demoform").Validform({
    usePlugin:{
    	datepicker:{}
    }
});
5.3版开始，不需要传入这些空对象了，只需在表单元素上绑定plugin="datepicker"就可以，初始化直接这样：
$(".demoform").Validform();</pre></li>
                        </ul>
                    </dd>
                    
                    <dt><a name="initialize">初始化参数说明</a></dt>
                    <dd>
                    	<p>所有可用参数如下：</p>
                    	<div class="wp_syntax"><table><tbody><tr><td class="line_numbers"><pre>1
2

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
</pre></td><td class="code"><pre style="font-family:monospace;" class="javascript">$<span style="color: #009900;">(</span><span style="color: #3366CC;">".demoform"</span><span style="color: #009900;">)</span>.<span style="color: #660066;">Validform</span><span style="color: #009900;">(</span><span style="color: #009900;">{</span><span style="color: #006600; font-style: italic;"></span>
	btnSubmit<span style="color: #339933;">:</span><span style="color: #3366CC;">"#btn_sub"</span><span style="color: #339933;">,</span> 
	btnReset<span style="color: #339933;">:</span><span style="color: #3366CC;">".btn_reset"</span><span style="color: #339933;">,</span>
	tiptype<span style="color: #339933;">:</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> 
	ignoreHidden<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
	dragonfly<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
	tipSweep<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
	label<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">".label"</span><span style="color: #339933;">,</span>
	showAllError<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
	postonce<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
	ajaxPost<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
	datatype<span style="color: #339933;">:</span><span style="color: #009900;">{</span>
		<span style="color: #3366CC;">"*6-20"</span><span style="color: #339933;">:</span> <span style="color: #009966; font-style: italic;">/^[^\s]{6,20}$/</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">"z2-4"</span> <span style="color: #339933;">:</span> <span style="color: #009966; font-style: italic;">/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">"username"</span><span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span>gets<span style="color: #339933;">,</span>obj<span style="color: #339933;">,</span>curform<span style="color: #339933;">,</span>regxp<span style="color: #009900;">)</span><span style="color: #009900;">{</span>
			<span style="color: #006600; font-style: italic;">//参数gets是获取到的表单元素值，obj为当前表单元素，curform为当前验证的表单，regxp为内置的一些正则表达式的引用;</span>
			<span style="color: #003366; font-weight: bold;">var</span> reg1<span style="color: #339933;">=</span><span style="color: #009966; font-style: italic;">/^[\w\.]{4,16}$/</span><span style="color: #339933;">,</span>
				reg2<span style="color: #339933;">=</span><span style="color: #009966; font-style: italic;">/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,8}$/</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">(</span>reg1.<span style="color: #660066;">test</span><span style="color: #009900;">(</span>gets<span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span><span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span>
			<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">(</span>reg2.<span style="color: #660066;">test</span><span style="color: #009900;">(</span>gets<span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span><span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span><span style="color: #009900;">}</span>
			<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #006600; font-style: italic;">//注意return可以返回true 或 false 或 字符串文字，true表示验证通过，返回字符串表示验证失败，字符串作为错误提示显示，返回false则用errmsg或默认的错误提示;</span>
		<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">"phone"</span><span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>
			<span style="color: #006600; font-style: italic;">// 5.0 版本之后，要实现二选一的验证效果，datatype 的名称 不 需要以 "option_" 开头;	</span>
		<span style="color: #009900;">}</span>
	<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
	usePlugin<span style="color: #339933;">:</span><span style="color: #009900;">{</span>
		swfupload<span style="color: #339933;">:</span><span style="color: #009900;">{</span><span style="color: #009900;">}</span><span style="color: #339933;">,</span>
		datepicker<span style="color: #339933;">:</span><span style="color: #009900;">{</span><span style="color: #009900;">}</span><span style="color: #339933;">,</span>
		passwordstrength<span style="color: #339933;">:</span><span style="color: #009900;">{</span><span style="color: #009900;">}</span><span style="color: #339933;">,</span>
		jqtransform<span style="color: #339933;">:</span><span style="color: #009900;">{</span>
			selector<span style="color: #339933;">:</span><span style="color: #3366CC;">"select,input"</span>
		<span style="color: #009900;">}</span>
	<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
	beforeCheck<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span>curform<span style="color: #009900;">)</span><span style="color: #009900;">{</span>
		<span style="color: #006600; font-style: italic;">//在表单提交执行验证之前执行的函数，curform参数是当前表单对象。</span>
		<span style="color: #006600; font-style: italic;">//这里明确return false的话将不会继续执行验证操作;	</span>
	<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
	beforeSubmit<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span>curform<span style="color: #009900;">)</span><span style="color: #009900;">{</span>
		<span style="color: #006600; font-style: italic;">//在验证成功后，表单提交前执行的函数，curform参数是当前表单对象。</span>
		<span style="color: #006600; font-style: italic;">//这里明确return false的话表单将不会提交;	</span>
	<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
	callback<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span>data<span style="color: #009900;">)</span><span style="color: #009900;">{</span>
		<span style="color: #006600; font-style: italic;">//返回数据data是json对象，{"info":"demo info","status":"y"}</span>
		<span style="color: #006600; font-style: italic;">//info: 输出提示信息;</span>
		<span style="color: #006600; font-style: italic;">//status: 返回提交数据的状态,是否提交成功。如可以用"y"表示提交成功，"n"表示提交失败，在ajax_post.php文件返回数据里自定字符，主要用在callback函数里根据该值执行相应的回调操作;</span>
		<span style="color: #006600; font-style: italic;">//你也可以在ajax_post.php文件返回更多信息在这里获取，进行相应操作；</span>
		<span style="color: #006600; font-style: italic;">//ajax遇到服务端错误时也会执行回调，这时的data是{ status:**, statusText:**, readyState:**, responseText:** }；</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//这里执行回调操作;</span>
		<span style="color: #006600; font-style: italic;">//注意：如果不是ajax方式提交表单，传入callback，这时data参数是当前表单对象，回调函数会在表单验证全部通过后执行，然后判断是否提交表单，如果callback里明确return false，则表单不会提交，如果return true或没有return，则会提交表单。</span>
	<span style="color: #009900;">}</span>
<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
</pre></td></tr></tbody></table></div>

                        <h3>参数说明：【所有参数均为可选项】</h3>
                        <ul class="lireset2">
                            <li>必须是表单对象执行Validform方法，示例中".demoform"就是绑定在form元素上的class名称；</li>
                            <li><strong class="orange">btnSubmit</strong><br>
								指定当前表单下的哪一个按钮触发表单提交事件，如果表单下有submit按钮时可以省略该参数。示例中".btn_sub"是该表单下要绑定点击提交表单事件的按钮；</li>
                            <li><strong class="orange">btnReset</strong><br>
								".btn_reset"是该表单下要绑定点击重置表单事件的按钮;</li>
                            <li><strong class="orange">tiptype</strong><a name="tiptype"></a><br>
                            	可用的值有：1、2、3、4和function函数，默认tiptype为1。 <span class="green">3、4是5.2.1版本新增</span><br />
								1=> 自定义弹出框提示；<br />
                                2=> 侧边提示(会在当前元素的父级的next对象的子级查找显示提示信息的对象，表单以ajax提交时会弹出自定义提示框显示表单提交状态)；<br />
                                3=> 侧边提示(会在当前元素的siblings对象中查找显示提示信息的对象，表单以ajax提交时会弹出自定义提示框显示表单提交状态)；<br />
                                4=> 侧边提示(会在当前元素的父级的next对象下查找显示提示信息的对象，表单以ajax提交时不显示表单的提交状态)；<br />
                                如果上面的4种提示方式不是你需要的，你可以给tiptype传入自定义函数。通过自定义函数，可以实现你想要的任何提示效果：<br>
                                <pre>
tiptype:function(msg,o,cssctl){
    //msg：提示信息;
    //o:{obj:*,type:*,curform:*},
    //obj指向的是当前验证的表单元素（或表单对象，验证全部验证通过，提交表单时o.obj为该表单对象），
    //type指示提示的状态，值为1、2、3、4， 1：正在检测/提交数据，2：通过验证，3：验证失败，4：提示ignore状态, 
    //curform为当前form对象;
    //cssctl:内置的提示信息样式控制函数，该函数需传入两个参数：显示提示信息的对象 和 当前提示的状态（既形参o中的type）;
}
具体参见<a href="http://validform.rjboy.cn/demo/demo_tiptype_sideNonePop.html" target="_blank">demo</a>页。</pre>
								tiptype不为1时，Validform会查找class为"Validform_checktip"的标签显示提示信息。tiptype=1时，会自动创建弹出框显示提示信息。<br>
								Validform_checktip和表单元素之间的位置关系，会根据tiptype的值有对应的结构，上面已经做了说明。<br>
								<span class="green">5.3版本开始，如果页面里没有显示出错信息的标签，会根据tiptype值自动创建Validform_checktip对象。</span><br>
								
                            </li>
                            <li><strong class="orange">ignoreHidden</strong><br>
								可用值： true | false。<br>
								默认为false，当为true时对:hidden的表单元素将不做验证;</li>
                            <li><strong class="orange">dragonfly</strong><br>
								可用值： true | false。<br>
                                默认false，当为true时，值为空时不做验证；</li>
                            <li><strong class="orange">tipSweep</strong><br>
								可用值： true | false。<br>
								 默认为false， <span class="green">5.3版中做了修正，在各种tiptype下，</span> 为true时提示信息将只会在表单提交时触发显示，各表单元素blur时不会触发信息提示；</li>
                            <li><strong class="orange">label</strong> <sup class="green">5.3.1+</sup><br>
								选择符<br>
                                在没有绑定nullmsg时查找要显示的提示文字，默认查找".Validform_label"下的文字；</li>
                            <li><strong class="orange">showAllError</strong><br>
								可用值： true | false。<br>
                                默认为false，true：提交表单时所有错误提示信息都会显示；false：一碰到验证不通过的对象就会停止检测后面的元素，只显示该元素的错误信息；</li>
                            <li><strong class="orange">postonce</strong><br>
								可用值： true | false。<br>
                                默认为false，指定是否开启二次提交防御，true开启，不指定则默认关闭；<br>
								为true时，在数据成功提交后，表单将不能再继续提交。
                            </li>
                            <li><strong class="orange">ajaxPost</strong><br>
								可用值： true | false。<br>
                                默认为false，使用ajax方式提交表单数据，将会把数据POST到config方法或表单action属性里设定的地址；</li>
                            <li><strong class="orange">datatype</strong><br>
								传入自定义datatype类型，可以是正则，也可以是函数。<br>
                                <pre>
datatyp:{
    "zh2-4":/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/,
    "phone":function(gets,obj,curform,regxp){
        //参数gets是获取到的表单元素值，
        //obj为当前表单元素，
        //curform为当前验证的表单，
        //regxp为内置的一些正则表达式的引用。
        
        //return false表示验证出错，没有return或者return true表示验证通过。
    }
}</pre>
                                具体示例请参考<a href="http://validform.rjboy.cn/demo/demo_normal_datatype.html" target="_blank">demo</a>页；</li>
                            <li><strong class="orange">usePlugin</strong><br>
								目前已整合swfupload、datepicker、passwordstrength和jqtransform四个插件，在这里传入这些插件使用时需要传入的参数。datepicker在Validform内调用时另外扩展了几个比较实用的参数，具体请参考demo页；</li>
                            <li><strong class="orange">beforeCheck(curform)</strong><br>
                            	在表单提交执行验证之前执行的函数，curform参数获取到的是当前表单对象。<br>
								函数return false的话将不会继续执行验证操作;
                            </li>
                            <li><strong class="orange">beforeSubmit(curform)</strong><br>
								在表单验证通过，提交表单数据之前执行的函数，data参数是当前表单对象。<br>
								函数return false的话表单将不会提交;
                            </li>
                            <li><strong class="orange">callback</strong><br>
								在使用ajax提交表单数据时，数据提交后的回调函数。返回数据data是Json对象：<br>
								{"info":"demo info","status":"y"}<br>
								info: 输出提示信息，<br>
								status: 返回提交数据的状态,是否提交成功，"y"表示提交成功，"n"表示提交失败，在ajax_post.php文件返回数据里自定字符，主要用在callback函数里根据该值执行相应的回调操作。你也可以在ajax_post.php文件返回更多信息在这里获取，进行相应操作；<br>
								如果不是ajax方式提交表单，传入callback，这时data参数是当前表单对象，回调函数会在表单验证全部通过后执行，然后判断是否提交表单，如果callback里return false，则表单不会提交，如果return true或没有return，则会提交表单。<br>
								<span class="green">5.3版开始，ajax遇到服务端错误时也会执行回调，这时的data是{ status:**, statusText:**, readyState:**, responseText:** }</span></li>
                        </ul>
                    </dd>
                    
                    <dt><a name="validformObject">Validform对象<span class="fz12 gray ml10">[方法支持链式调用]</span></a></dt>
                    <dd>
                    	<div class="intro">
                        	<p>如示例 <span class="green">var demo=$(".formsub").Validform()</span>，那么demo对象会有以下属性和方法可以调用：</p>
                        </div>
                        
                        <h3><a name="tipmsg">tipmsg</a><span class="ml10">【object】</span></h3>
                        <div class="intro">
                        	
                            <p>如：<span class="gray">demo.tipmsg.s="error! no message inputed.";</span></p>
                            <p>通过该对象可以修改除 <span class="green">tit</span> 以外的其他提示文字，这样可以实现同一个页面的不同表单使用不同的提示文字。</p>
                            <pre>
具体可修改的提示文字
$.Tipmsg={//默认提示文字;
tit:"提示信息",
w:{
    "*":"不能为空！",
    "*6-16":"请填写6到16位任意字符！",
    "n":"请填写数字！",
    "n6-16":"请填写6到16位数字！",
    "s":"不能输入特殊字符！",
    "s6-18":"请填写6到18位字符！",
    "p":"请填写邮政编码！",
    "m":"请填写手机号码！",
    "e":"邮箱地址格式不对！",
    "url":"请填写网址！"
},
def:"请填写正确信息！",
undef:"datatype未定义！",
reck:"两次输入的内容不一致！",
r:"通过信息验证！",
c:"正在检测信息…",
s:"请{填写|选择}{0|信息}！",
v:"所填信息没有经过验证，请稍后…",
p:"正在提交数据…"
};</pre>
							<p>要修改tit（弹出框的标题文字）的话，可以这样：$.Tipmsg.tit="Message Box"，则弹出框的标题文字会换成"Message Box"</p>
                            <p class="green">注：<sup>5.3.2+</sup><br>
								$.Tipmsg.w里，形如"*6-16"的提示文字，里面的数字是会被替换的。如绑定datatype="*2-18"，那它默认的出错信息就会是"请填写2到18位任意字符！"，<span class="red">可以通过$.Tipmsg.w或Validform对象的tipmsg属性修改和扩展默认错误信息，如果你已经设置了"zh2-4"的提示信息是"2-4位中文",那么"zh2-8"出错的信息就自动会是："2-8位中文"。对于自定义的datatype，在扩展默认信息时，注意错误信息的名字要跟datatype名字一样，如上面示例是：$.Tipmsg.w["zh2-4"]="2-4位中文"。对于多页面或一个页面多表单有相同datatype来说，在$.Tipmsg.w或Validform对象的tipmsg属性中扩展默认提示信息是个很好的选择。</span><br>
                                5.3.1+ <br>
								$.Tipmsg.s是用来指定在没有绑定nullmsg时的默认提示信息。"{0}"是会被找到的label参数指定的对象或Validform_label里的文字替换掉的，"{填写|选择}"里的文字在绑定了"recheck"属性的表单元素上检测时是会不显示的，当前验证对象是radio、checkbox或select时，会输出"选择"，是其他类型的元素时会输出"填写"和后面的"信息"。<br>
                            </p>
                            <p class="green mt10">具体示例请参见<a target="_blank" href="http://validform.rjboy.cn/demo/demo_normal_autotip.html">demo</a>页。</p>
                        </div>
                        
                        <h3><a name="dataType">dataType</a><span class="ml10">【object】</span></h3>
                        <div class="intro">
                        	<p>获取内置的一些正则：</p>
                            <pre>
{
    "match":/^(.+?)(\d+)-(\d+)$/,
    "*":/[\w\W]+/,
    "*6-16":/^[\w\W]{6,16}$/,
    "n":/^\d+$/,
    "n6-16":/^\d{6,16}$/,
    "s":/^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]+$/,
    "s6-18":/^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]{6,18}$/,
    "p":/^[0-9]{6}$/,
    "m":/^13[0-9]{9}$|14[0-9]{9}|15[0-9]{9}$|18[0-9]{9}$/,
    "e":/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
    "url":/^(\w+:\/\/)?\w+(\.\w+)+.*$/
}</pre>
                        </div>
                        
                        <h3><a name="addRule">addRule(rule)</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>可以通过Validform对象的这个方法来给表单元素绑定验证规则，<a href="#bindtype">绑定验证类型</a>中列出的附加属性都可以通过这个方法绑定。</p>
                            <pre>
demo.addRule([
    {
        ele:"#name",
        datatype:"s6-18",
        ajaxurl:"valid.php",
        nullmsg:"请输入昵称！",
        errormsg:"昵称至少6个字符,最多18个字符！"
    },
    {
        ele:"#userpassword",
        datatype:"*6-16",
        nullmsg:"请设置密码！",
        errormsg:"密码范围在6~16位之间！"
    },
    {
        ele:"#userpassword2",
        datatype:"*",
        recheck:"userpassword",
        nullmsg:"请再输入一次密码！",
        errormsg:"您两次输入的账号密码不一致！"
    }
]);</pre>
							<p>其中ele是指定要绑定规则的对象，会在Validform对象下查找这些对象。</p>
                        </div>
                        
                        <h3><a name="eq">eq(n)</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>获取Validform对象的第n个元素。</p>
                            <p>如你页面上有多个form的class都是formsub，执行上面的验证绑定，得到的demo对象就可以操作所有这些表单，如果你要对其中某个表单执行某些操作，那么就可以使用这个方法。</p>
                            <p>如demo.eq(0).resetForm()，重置第一个表单。</p>
                        </div>
                        
                        <h3><a name="ajaxPost">ajaxPost(flag,sync,url)</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>以ajax方式提交表单。flag为true时，跳过验证直接提交，sync为true时将以同步的方式进行ajax提交。</p>
                            <p class="green">参数url是5.3版新增，传入了url地址时，表单会提交到这个地址</p>
                            <p>如demo.ajaxPost(true)，不做验证直接ajax提交表单。</p>
                        </div>
                        
                        <h3><a name="abort">abort()</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>终止ajax的提交。</p>
                            <p>如执行上面的ajaxPost()之后，发现某些项填写不对，想取消表单提交，那么就可以执行这个操作：demo.abort()</p>
                        </div>
                        
                        <h3><a name="submitForm">submitForm(flag,url)</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>以初始化时传入参数的设置方式提交表单，flag为true时，跳过验证直接提交。</p>
                            <p class="green">参数url是5.3版新增，传入了url地址时，表单会提交到这个地址</p>
                            <p>如demo.submitForm(true)，不做验证直接提交表单。</p>
                        </div>
                        
                        <h3><a name="resetForm">resetForm()</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>重置表单。</p>
                            <p>如demo.resetForm()，重置表单到初始状态。</p>
                        </div>
                        
                        <h3><a name="resetStatus">resetStatus()</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>重置表单的提交状态。传入了postonce参数的话，表单成功提交后状态会设置为"posted"，重置提交状态可以让表单继续可以提交。</p>
                            <p>如demo.resetStatus()</p>
                        </div>
                        
                        <h3><a name="getStatus">getStatus()</a><span class="ml10">【返回值：String】</span></h3>
                        <div class="intro">
                        	<p>获取表单的提交状态，normal：未提交，posting：正在提交，posted：已成功提交过。</p>
                            <p>如demo.getStatus()</p>
                        </div>
                        
                        <h3><a name="setStatus">setStatus(status)</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>设置表单的提交状态，可以设置normal，posting，posted三种状态，不传参则设置状态为posting，这个状态表单可以验证，但不能提交。</p>
                            <p>如demo.setStatus("posted")</p>
                        </div>
                        
                        <h3><a name="ignore">ignore(selector)</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>忽略对所选择对象的验证，不传入selector则忽略所有表单元素。</p>
                            <p>如demo.ignore("select,textarea,#name")，忽略Validform对象下所有select，textarea及一个id为"name"元素的验证。</p>
                        </div>
                        
                        <h3><a name="unignore">unignore(selector)</a><span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>将ignore方法所忽略验证的对象重新获取验证效果，不传入selector则恢复验证所有表单元素。</p>
                            <p>如demo.unignore("select,textarea,#name")，恢复Validform对象下所有select，textarea及一个id为"name"元素的验证。</p>
                        </div>
                        
                        <h3><a name="check">check(bool,selector)</a><span class="ml10">【返回值：Boolean】</span></h3>
                        <div class="intro">
                        	<p>bool为true时则只验证不显示提示信息</p>
                        	<p>对指定对象进行验证(默认验证当前整个表单)，通过返回true，否则返回false（绑定实时验证的对象，格式符合要求时返回true，而不会等ajax的返回结果）</p>
                            <p>如demo.check()，验证当前整个表单，且只验证但不显示对错信息。</p>
                        </div>
                        
                        <h3><a name="config">config(setup)</a> <sup class="green">5.3+</sup> <span class="ml10">【返回值：Validform】</span></h3>
                        <div class="intro">
                        	<p>setup参数是一个对象。</p>
                            <pre>
如:
demo.config({
    showAllError:true,
    url:"这里指定提交地址",
    ajaxpost:{
        //可以传入$.ajax()能使用的，除dataType外的所有参数;
    },
    ajaxurl:{
        //可以传入$.ajax()能使用的，除dataType外的所有参数;
    }
})

<strong>可用参数：</strong>
<span class="orange">tiptype等</span> <sup class="green">5.3.2+</sup>：可以在这里设置初始化可用的所有参数
<span class="orange">url</span>：指定表单的提交路径，这里指定的路径会覆盖表单action属性所指定的路径
<span class="orange">ajaxpost</span>：表单以ajax提交时，可以在这里配置ajax的参数
<span class="orange">ajaxurl</span>：配置实时验证ajax的参数

①、config方法还能为已经初始化过的表单重新配置参数了！<sup class="green">5.3.2+</sup>
如var demo=$(".formsub").Validform(); 
demo.config({tiptype:2});
demo下的各表单还能分别配置不同参数！
如demo.eq(0).config({tiptype:1,ajaxPost:true});
demo.eq(1).config({tiptype:1,callback:function(curform){my_method_to_submit_form(); return false;}});

②、执行config可以动态设置、添加参数，如：
demo.config({
    url:"http://validform.rjboy.cn"
});
$(".save").click(function(){
    demo.config({
        ajaxpost:{
            timeout:1000
        }
    });
});
那么在点击save按钮后，demo所对应的表单的config={
    url:"http://validform.rjboy.cn",
    ajaxpost:{
        timeout:1000
    }
}
③、参数url的优先级：form表单的action所指定的提交地址会被config.url覆盖，
config.url会被config.ajaxpost.url覆盖，config.ajaxpost.url会被Validform对象的方法submitForm(flag,url)
和ajaxPost(flag,sync,url)里的url覆盖。
如果表单里没有指定action提交地址，那么就会提交到config.url设定的地址。
考虑到整个验证框架的逻辑，传入dataType参数不会起作用，不会被覆盖，ajax必须返回含有status值的json数据。

④、另外注意的是：传入的success和error方法里，能多获取到一个参数，如：
demo.config={
    ajaxpost:{
    	url:"",
        timeout:1000,
        ...,
        success:function(data,obj){
            //data是返回的json数据;
            //obj是当前表单的jquery对象;
        },
        error:function(data,obj){
            //data是{ status:**, statusText:**, readyState:**, responseText:** };
            //obj是当前表单的jquery对象;
        }
    },
    ajaxurl:{
        success:function(data,obj){
            //data是返回的json数据;
            //obj是当前正做实时验证表单元素的jquery对象;
            //注意：5.3版中，实时验证的返回数据须是含有status值的json数据！
            //跟callback里的ajax返回数据格式统一，建议不再返回字符串"y"或"n"。目前这两种格式的数据都兼容。
        }
    }
}
</pre>
                        </div>
                        
                    </dd>
                    
                    <dt><a name="plugin">调用外部插件</a></dt>
                    <dd>
                    	<h3><a name="swfupload">文件上传 - swfupload</a></h3>
                        <div class="intro">
                        	<p><a href="http://validform.rjboy.cn/demo/demo_usePlugin_uploadAtOnce.html" class="green" target="_blank">选择文件后立即上传</a></p>
                            <p><a href="http://validform.rjboy.cn/demo/demo_usePlugin_uploadWhenValid.html" class="green" target="_blank">表单验证通过后上传文件</a></p>
                        </div>
                        
                        <h3><a name="passwordStrength">密码强度检测 - passwordStrength</a></h3>
                        <div class="intro">
                        	<p><a href="http://validform.rjboy.cn/demo/demo_usePlugin_strengthAlways.html" class="green" target="_blank">密码强度提示与验证提示同时显示</a></p>
                        	<p><a href="http://validform.rjboy.cn/demo/demo_usePlugin_strengthNeeded.html" class="green" target="_blank">在符合验证要求时才有密码强度提示</a></p>
                        </div>
                        
                        <h3><a name="datePicker">日期控件 - datePicker</a></h3>
                        <div class="intro">
                        	<p><a href="http://validform.rjboy.cn/demo/demo_usePlugin_datePickerDefault.html" class="green" target="_blank">默认效果</a></p>
                        	<p><a href="http://validform.rjboy.cn/demo/demo_usePlugin_datePickerCallback.html" class="green" target="_blank">选择日期后执行回调函数</a></p>
                        </div>
                        
                        <h3><a name="jqtransform">表单美化 - jqtransform</a></h3>
                        <div class="intro">
                        	<p><a href="http://validform.rjboy.cn/demo/demo_usePlugin_jqtransformDefault.html" class="green" target="_blank">默认对所有元素美化</a></p>
                            <p><a href="http://validform.rjboy.cn/demo/demo_usePlugin_jqtransformAssign.html" class="green" target="_blank">美化指定的表单元素</a></p>
                        </div>
                        
                    </dd>
                    
                    <dt><a name="validformjquery">Validform的公用对象</a></dt>
                    <dd>
                    	<h3><a name="Datatype">$.Datatype</a></h3>
                        <div class="intro">
                        	<p>可以通过$.Datatype对象来扩展datatype类型。</p>
                            <p>如$.Datatype.zh=/^[\u4E00-\u9FA5\uf900-\ufa2d]{1,}$/</p>
                        </div>
                        
                        <h3><a name="Tipmsg">$.Tipmsg</a></h3>
                        <div class="intro">
                        	<p>可以通过$.Tipmsg对象来修改默认提示文字。具体可修改的提示文字请查看Validform对象的tipmsg属性。</p>
                        	<p>如果Validform对象的tipmsg属性没有找到相关的提示信息，那么就会到$.Tipmsg中查找对应提示文字。</p>
                            <p>如$.Tipmsg.tit="msg box"; //设置默认弹出框的标题文字。</p>
                        </div>
                        
                        <h3><a name="Showmsg">$.Showmsg(msg)</a></h3>
                        <div class="intro">
                        	<p>调用Validform自定义的弹出框。</p>
                        	<p>参数msg是要显示的提示文字。</p>
                            <p>如$.Showmsg("这是提示文字"); //如果不传入信息则不会有弹出框出现，像$.Showmsg()这样是不会弹出提示框的。</p>
                        </div>
                        
                        <h3><a name="Hidemsg">$.Hidemsg()</a></h3>
                        <div class="intro">
                        	<p>关闭Validform自定义的弹出框。</p>
                            <p>如$.Hidemsg()</p>
                        </div>
                        
                    </dd>
                </dl>
            </div>
            <div class="sidenav fl">
            	<h3>Validform v5.3.2 文档</h3>
            	<ul class="lireset2" style="padding-left:10px;">
                    <li><a href="#getstart">Validform使用入门</a></li>
                    <li><a href="#bindtype">绑定附加属性</a></li>
                    <li><a href="#initialize">初始化参数说明</a></li>
                </ul>
                <ul class="lireset" style="padding-left:10px;">
                    <li class="expand">
                    	<a href="#validformObject">Validform对象</a>
                    	<ul class="lireset2" style="display:block;">
                        	<li><a href="#tipmsg">tipmsg</a></li>
                            <li><a href="#dataType">dataType</a></li>
                            <li><a href="#addRule">addRule(rule)</a></li>
                            <li><a href="#eq">eq(n)</a></li>
                            <li><a href="#ajaxPost">ajaxPost(flag,sync,url)</a></li>
                            <li><a href="#abort">abort()</a></li>
                            <li><a href="#submitForm">submitForm(flag,url)</a></li>
                            <li><a href="#resetForm">resetForm()</a></li>
                            <li><a href="#resetStatus">resetStatus()</a></li>
                            <li><a href="#getStatus">getStatus()</a></li>
                            <li><a href="#setStatus">setStatus(status)</a></li>

                            <li><a href="#ignore">ignore(selector)</a></li>
                            <li><a href="#unignore">unignore(selector)</a></li>
                            <li><a href="#check">check(bool,selector)</a></li>
                            <li><a href="#config">config(setup)</a></li>
                        </ul>
                    </li>
                    <li class="expand">
                    	<a href="#plugin">调用外部插件</a>
                    	<ul class="lireset2">
                        	<li><a href="#swfupload">文件上传 - swfupload</a></li>
                            <li><a href="#passwordStrength">密码强度检测 - passwordStrength</a></li>
                            <li><a href="#datePicker">日期控件 - datePicker</a></li>
                            <li><a href="#jqtransform">表单美化 - jqtransform</a></li>
                        </ul>
                    </li>
                    <li class="expand">
                    	<a href="#validformjquery">Validform的公用对象</a>
                    	<ul class="lireset2">
                        	<li><a href="#Datatype">$.Datatype</a></li>
                            <li><a href="#Tipmsg">$.Tipmsg</a></li>
                            <li><a href="#Showmsg">$.Showmsg(msg)</a></li>
                            <li><a href="#Hidemsg">$.Hidemsg</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
        
    </div>
</div>

<div class="footer">
    <div class="wraper">
        <p class="fl">Copyright &copy; <a href="http://www.eloocor.com" target="_blank">易罗客</a></p>
        <p class="fr"><a href="http://www.rjboy.cn" target="_blank">瑞金佬的前端路</a><b> | </b><a href="http://validform.rjboy.cn">Validform</a><b> | </b><a href="http://www.rjboy.cn/?p=789" target="_blank">hScrollpane</a><b> | </b><a href="http://www.rjboy.cn/?p=708" target="_blank">Xslider</a></p>
    </div>
</div>

<a href="###" class="toTop">回顶部</a>

<script type="text/javascript" src="http://validform.rjboy.cn/wp-content/themes/validform/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(function(){
	var sidenav=$(".sidenav").css({position:"relative"});
	var offsetTop=sidenav.offset().top;
	var top=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
	top=top>offsetTop ? top-offsetTop+10 : 0;
	sidenav.animate({
		top:top	
	},{queue:false,duration:300});
	
	$(window).bind("scroll resize",function(){
		top=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
		if(top>50){
			$(".toTop").fadeIn(300);		
		}else{
			$(".toTop").fadeOut(400);
		}
		
		top=top>offsetTop ? top-offsetTop+10 : 0;
		
		sidenav.animate({
			top:top	
		},{queue:false,duration:300});	
	});	
	
	$(".sidenav .expand>a").click(function(){
		$(this).siblings("ul").show().parents(".expand").siblings(".expand").find("ul").hide();;
	});
	$(".sidenav .expand li a").click(function(){
		$(this).parents(".expand").siblings(".expand").find("ul").hide();
	});
	
	//back to the top;
    $(".toTop").click(function () {
        $($.browser.safari || document.compatMode == 'BackCompat' ? document.body : document.documentElement).animate({
            scrollTop: 0
        }, 200);
        return false;
    });
})
</script>
</body>
</html>